import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
    return 1/(1+np.exp(-x))
x=np.random.rand(1000,100)#1000个数据，每个数据有100个特征
node_num=100#每个隐藏层都有 100个节点
hidden_layer_size=5 #有5层隐藏层
activations={}#把激活值的结果保存在此处

for i in range(hidden_layer_size):
    if i!=0:#如果不是第一层，也就是索引 0，输入就是上一层的激活值
        x=activations[i-1]
    #初始化当前的权重矩阵
    w=np.random.randn(node_num,node_num)/np.sqrt(node_num)
    #计算当前层的输出
    z=np.dot(x,w)
    a=sigmoid(z)
    activations[i]=a
for i,a in activations.items():
    #1行，len(activations)列个图，i+1代表当前图片的索引
    plt.subplot(1,len(activations),i+1)
    #子图标题，第几层
    plt.title(str(i+1)+"-layer")
    #绘制直方图 a.flatten代表将（1000✖️100）个矩阵展平 30是直方图的柱数 x 的范围是 0～1，因为 sigmoid值就是在 0～1
    plt.hist(a.flatten(),30,range=(0,1))
plt.show()